﻿using System.Text.RegularExpressions;

namespace TPXSDK.NET.Mission;

/// <summary>
/// 词元描述类
/// </summary>
internal class Token
{
    /// <summary>
    /// 构造函数
    /// </summary>
    public Token(string strName, int row)
    {
        Name = strName;
        Row = row;

        // 根据名称形式推测词元基本类型
        if (Regex.IsMatch(strName, @"^[+|-]?\d+\.?\d*$"))
        {// 整数和浮点数
            Type = TokenType.NUMBER;
        }
        else if (Regex.IsMatch(strName, @"([+|-]?\d+\.?\d*[w|W|e|E]),\s*?([+|-]?\d+\.?\d*[s|S|n|N])"))
        {// 绝对位置坐标：(^(-?\d+)(\.\d+)?$,^(-?\d+)(\.\d+)?$)
            Type = TokenType.ABS_POS;
        }
        else if (Regex.IsMatch(strName, @"([+|-]?\d+\.?\d*),\s*?([+|-]?\d+\.?\d*)"))
        {// 相对位置坐标
            Type = TokenType.REL_POS;
        }
        else
        {// 未知类型
            Type = TokenType.UNKNOWN;
        }
    }

    public string Name { get; }
    public int Row { get; }
    public TokenType Type { get; set; }
}
